#coding: utf-8

'''\
Объекты для хранения и обработки данных, вынесенные в отдельный .py файл.
'''
class Item(object):

    def __init__(self, title=''):
        self.presence = dict()
        self.description = dict()
        self.description.setdefault('title', title)
    
    def get(self, key):
        return self.description.get(key)


class Category(object):
    
    def __init__(self, title=''):
        self.products = list()
        self.description = dict()
        self.description.setdefault('title', title)
    
    def add(self, item):
        self.products.append(item)

    def title(self):
        return self.description.get('title')


class Section(object):
    
    def __init__(self, title='unnamed'):
        self.categories = dict()
        self.description = dict()
        self.description.setdefault('title', title)
    
    def getlist(self):
        return self.categories.values()
    
    def getbranch(self, title):
        if self.categories.has_key(title):
            return self.categories.get(title)
        return self.categories.setdefault(title, Category(title))

    def title(self):
        return self.description.get('title')


class Tree(object):

    def __init__(self):
        self.sections = dict()
    
    def getlist(self):
        return self.sections.values()
    
    def getbranch(self, title):
        if self.sections.has_key(title):
            return self.sections.get(title)
        return self.sections.setdefault(title, Section(title))
